package com.lyb.statement;

import java.util.Map;

/**
 * 可执行语句抽象类,规范该可执行文件所有可执行语句的服务类设置
 *
 * @author Mr.Alpaca
 * @version 1.4.0
 */
public interface ExecutableStatement {
    /**
     * 负责处理的可执行语句字符串
     */
    String STATEMENT = null;

    /**
     * 格式判断，判断输入语句是否符合该类型可执行语句的正确格式
     *
     * @param row 当前语句行数(用于提示报错信息)
     * @param statement 输入语句
     * @return 判断结果
     */
    boolean formatJudge(int row, String statement);

    /**
     * 执行该可执行语句，将运算结果储存到Map中
     *
     * @param statement   输入语句
     * @param variableMap 储存各变量值
     */
    void execute(String statement, Map<String, Double> variableMap);

    /**
     * 获得该类负责处理的可执行语句字符串
     *
     * @return 可执行语句字符串
     */
    String getStatement();
}
